package hit.dao;

/**
 *	Represents a factory class for creating the necessary
 *	{@link DataAccessObject}s needed for saving the projects
 *	data.
 */
public interface DAOFactory {
	/**
	 *	Creates a new {@link DataAccessObject}.
	 * 	@return The DataAccessObject created by the factory.
	 */
	public DataAccessObject CreateDataAccessObject();
	
	/**
	 *	Creates a new StorageUnitDAO
	 * 	@return The DataAccessObject created by the factory.
	 */
	public DAOBase CreateStorageUnitDAO();
	
	/**
	 *	Creates a new ProductGroupDAO
	 * 	@return The DataAccessObject created by the factory.
	 */
	public DAOBase CreateProductGroupDAO();
	
	/**
	 *	Creates a new ProductDAO
	 * 	@return The DataAccessObject created by the factory.
	 */
	public DAOBase CreateProductDAO();
	
	/**
	 *	Creates a new ItemDAO
	 * 	@return The DataAccessObject created by the factory.
	 */
	public DAOBase CreateItemDAO();
	
	/**
	 *	Creates a new SettingsDAO
	 * 	@return The DataAccessObject created by the factory.
	 */
	public SettingsDAO CreateSettingsDAO();
}
